Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Ilość odpowiedzi na stronie?, jak to zrobić?
irysek110
post
Post #1





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 29.01.2005

Ostrzeżenie: (0%)
-----


Witajcie!


W trakcie realizacji swojego projektu natknąłem się na problem: nie wiem jak wyświetlać np. po 10 odpowiedzi na stronie, a na samym dole (pod wyświetlonymi odpowiedziami) umieścić cyferki oznaczające ilość stron odpowiedzi pozostałych do obejrzenia czyli coś w rodzaju: 1 [2] [3] itp..

Ma ktoś jakiś pomysł?

Dziękuję za wszystkie odpowiedzi.

Irysek
Go to the top of the page
+Quote Post
mike
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Zacznij korzystać z wyszukiwarki !

Szukaj: stronicowanie
Go to the top of the page
+Quote Post
mario
post
Post #3





Grupa: Zarejestrowani
Postów: 186
Pomógł: 0
Dołączył: 23.09.2003
Skąd: Siemianowice Śląskie

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $zapytanie = &#092;"SELECT * FROM tabela\";
  3. $result = mysql_query($zapytanie);
  4. $rekordy = mysql_num_rows ($result);
  5.  
  6. $max_poz = 10;
  7.  
  8. echo &#092;"<p align=center>\";
  9.  
  10. // jeśli wchodzimy bez parametru $page pierwsza strona
  11. // ustawia się jako pierwsza i pętla startuje od cyfry 0
  12.  
  13. If ($page==&#092;"\")
  14.  {
  15. $page=1;
  16. $start=0;
  17.  }
  18.  
  19. else
  20.  
  21. // jeśli wchodzimy z parametrem pierwsza strona
  22. // ustawia się z podanego parametru $page i pętla startuje od parametru $page
  23.  
  24.  {
  25. $start=$page*$max_poz;
  26. $start=$start-$max_poz;
  27.  }
  28.  
  29. $stron = ceil ($rekordy/$max_poz);  // instrukcja ceil zaokrągla ułamki w górę do pełnej liczby
  30.  
  31. // wykonujemy pętelki z podziałem na odnośniki do poszczególnych stron
  32.  
  33. If ($page>1)
  34.  {
  35. $strona=$page-1;
  36. echo &#092;"<a href='index.php?page=$strona'>poprzednie</a> &nbsp; \";
  37.  }
  38.  
  39. For ($index=1;
  40.  $index <= $stron;
  41.  $index++)
  42.  {
  43. If (($page==$index) and ($stron!=1))
  44.  {
  45. echo&#092;"<font color=red><b>$index</b></font> | \";
  46. $next=$page+1;
  47.  }
  48. elseif ($stron!=1)
  49.  echo&#092;" <b><a href='index.php?page=$index'>$index</a></b> | \";
  50.  
  51. If (($page>0) and ($index==$stron) and ($page<$stron))
  52.  echo &#092;" &nbsp; <a href='index.php?page=$next'>następne</a>\";
  53.  }
  54.  
  55. // pobierasz sobie z bazy dane w zakresie oznaczonym $start, $max_poz (czyli z aktualnej strony na której jesteś)
  56.  
  57. $zapytanie = &#092;"SELECT * FROM tabela LIMIT $start, $max_poz\";
  58. $result = mysql_query($zapytanie);
  59.  
  60.  while ($r= mysql_fetch_array($result))
  61.  {
  62.  $zmienna = $r [zmienna];
  63.  ......
  64.  ......
  65.  }
  66.  
  67. ?>
Go to the top of the page
+Quote Post
irysek110
post
Post #4





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 29.01.2005

Ostrzeżenie: (0%)
-----


Mike_Mech..(IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Chciałem skorzystać z wyszukiwarki, ale nie wiedziałem jak to się formalnie nazywa. Dzięki, że mnie uświadomiłeś.(IMG:http://forum.php.pl/style_emoticons/default/smile.gif)


Mario! Serdecznie dzięki poraz drugi!
Go to the top of the page
+Quote Post
Jarod
post
Post #5





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

Ostrzeżenie: (0%)
-----


Cytat(mario @ 2005-05-07 17:49:21)
  1. <?php
  2. $zapytanie = &#092;"SELECT * FROM tabela\";
  3. $result = mysql_query($zapytanie);
  4. $rekordy = mysql_num_rows ($result);
  5.  
  6. $max_poz = 10;
  7.  
  8. echo &#092;"<p align=center>\";
  9.  
  10. // jeśli wchodzimy bez parametru $page pierwsza strona
  11. // ustawia się jako pierwsza i pętla startuje od cyfry 0
  12.  
  13. If ($page==&#092;"\")
  14.  {
  15. $page=1;
  16. $start=0;
  17.  }
  18.  
  19. else
  20.  
  21. // jeśli wchodzimy z parametrem pierwsza strona
  22. // ustawia się z podanego parametru $page i pętla startuje od parametru $page
  23.  
  24.  {
  25. $start=$page*$max_poz;
  26. $start=$start-$max_poz;
  27.  }
  28.  
  29. $stron = ceil ($rekordy/$max_poz);  // instrukcja ceil zaokrągla ułamki w górę do pełnej liczby
  30.  
  31. // wykonujemy pętelki z podziałem na odnośniki do poszczególnych stron
  32.  
  33. If ($page>1)
  34.  {
  35. $strona=$page-1;
  36. echo &#092;"<a href='index.php?page=$strona'>poprzednie</a> &nbsp; \";
  37.  }
  38.  
  39. For ($index=1;
  40.  $index <= $stron;
  41.  $index++)
  42.  {
  43. If (($page==$index) and ($stron!=1))
  44.  {
  45. echo&#092;"<font color=red><b>$index</b></font> | \";
  46. $next=$page+1;
  47.  }
  48. elseif ($stron!=1)
  49.  echo&#092;" <b><a href='index.php?page=$index'>$index</a></b> | \";
  50.  
  51. If (($page>0) and ($index==$stron) and ($page<$stron))
  52.  echo &#092;" &nbsp; <a href='index.php?page=$next'>następne</a>\";
  53.  }
  54.  
  55. // pobierasz sobie z bazy dane w zakresie oznaczonym $start, $max_poz (czyli z aktualnej strony na której jesteś)
  56.  
  57. $zapytanie = &#092;"SELECT * FROM tabela LIMIT $start, $max_poz\";
  58. $result = mysql_query($zapytanie);
  59.  
  60.  while ($r= mysql_fetch_array($result))
  61.  {
  62.  $zmienna = $r [zmienna];
  63.  ......
  64.  ......
  65.  }
  66.  
  67. ?>

@mario: Mam jedno pytanie. Użyłeś na samym początku skrytpu kodu:
  1. <?php
  2.  
  3. $zapytanie = &#092;"SELECT * FROM tabela\";
  4. $result = mysql_query($zapytanie);
  5. $rekordy = mysql_num_rows ($result);
  6.  
  7. ?>

do pobrania ilości wszystkich wierszy. A nie szybciej będzie jak zrobisz tak:
  1. <?php
  2.  
  3. $zapytanie = &#092;"SELECT Count(primary key) FROM tabela\";
  4. $result = mysql_query($zapytanie);
  5. $rekordy = mysql_fetch_row($result);;
  6.  
  7. ?>

(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?

Drugie pytanie: czy da się skrypt przerobić tak, żeby za każdym razem wywoływania samego siebie nie sprawdzał ilości rekordów? Bo po co cały czas robić to samo?

Pozdrawiam

PS. Jestem bliski rozwiązania tego problemu ale proszę o odpowiedź

EDIT:
------
Można to zrobić jedynie przez przekazanie wartości za pomocą GET, ale nie wiemy jakiego wyniku się spodziewamy więc jest to niebezpieczne. Dlatego moim zdaniem lepiej zliczać ilość wierszy za każdym razem.
Co o tym myślicie?

Ten post edytował J4r0d 10.05.2005, 17:26:36
Go to the top of the page
+Quote Post
dzon
post
Post #6





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 11.06.2006

Ostrzeżenie: (0%)
-----


mam problem ...
skorzystałem z kodu kolegi mario i stronicowanie dzial mi pieknie tylko jest problem z tym, że jak dodoaje coś do mojej bazyto wynik wyswietla mi sie tam gdzie był ostatnio usuniety rekord. Rzecz w tym ze chcialbym aby po dodaniu rekordy wyswietlal sie on na poczatku tablicy. Tak mialem przed dodoaniem tego stronicowania i nie wiem teraz o co chodzi.

Używam polecienia order by, co prawda sortuje mi wyniki w tabeli ale tylko na kolejnych stronach a nie sortuje wszstkiego.
  1. <?php
  2. $query = "SELECT * FROM mode1 order by Id DESC";
  3. $result = mysql_query($query) or die("Query failed");
  4. $rekordy = mysql_num_rows ($result);
  5. ?>


Po za tym tak juz pisałem po usunieciu rekordu, dodanie kolejnego powoduje ze dodaje go nie na poczatku tylko od miejsca gdzie usunąłem ostatni rekord.

Prosze o pomoc

dobra doszedłem co bylo nie tak ... za LIMIT wstawialem ORDER a musi byc przed ... no coz czlowiek sie uczy dopiero
Go to the top of the page
+Quote Post
mario
post
Post #7





Grupa: Zarejestrowani
Postów: 186
Pomógł: 0
Dołączył: 23.09.2003
Skąd: Siemianowice Śląskie

Ostrzeżenie: (0%)
-----


Cytat(J4r0d @ 10.05.2005, 17:24 ) *
Można to zrobić jedynie przez przekazanie wartości za pomocą GET, ale nie wiemy jakiego wyniku się spodziewamy więc jest to niebezpieczne. Dlatego moim zdaniem lepiej zliczać ilość wierszy za każdym razem.
Co o tym myślicie?


oczywiscie ze $_GET latwo jest oszukac podobnie jak $_COOKIE, mozna zastosowac $_POST w polu "hidden" lub lepiej $_SESSION ale moim zdaniem po co.... Wykonanie sprawdzenia liczby komorek z tabeli trwa ulamki sekundy, a np. z $_SESSION trzeba by sprawdzic czy zmienna jest zarejestrowana (jezeli nie to ja zarejestrowac), i inne pierdoly zwiazane z zabezpieczeniem skryptu. Moim zdaniem robota nie warta zachodu... po co sobie komplikowac zycie?

Oczywiscie to byl przyklad i kazdy zrobi jak mu bedzie wygodnie i najlepiej :-)

Ten post edytował mario 12.06.2006, 22:00:49
Go to the top of the page
+Quote Post
Kayne
post
Post #8





Grupa: Zarejestrowani
Postów: 82
Pomógł: 0
Dołączył: 30.04.2006
Skąd: Kalisz

Ostrzeżenie: (0%)
-----


Witam

Interesuje mnie ważna kwestia, a mianowicie w kodzie jest tak:

Kod
<?php
$query = "SELECT * FROM mode1 order by Id DESC";
$result = mysql_query($query) or die("Query failed");
$rekordy = mysql_num_rows ($result);
?>


A czy nie lepiej tak?

Kod
<?php
$result = mysql_query("SELECT * FROM mode1 ORDER BY Id DESC") or die("Query failed");
$rekordy = mysql_num_rows ($result);
?>


Mniej zmiennych używasz, kod jest mniej obszerny i czytelniejszy.
Go to the top of the page
+Quote Post
bim2
post
Post #9





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

Ostrzeżenie: (0%)
-----


Zero róznicy w tym jest więc nie pokazuj że jesteś jakiś mądry (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) . A ja zamaist or die dałbym mysql_error (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) wtedy skrypt lecial by dalej. Np jak się ma templatki i wczyta 1 połowe a drugą nie (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #10





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Właśnie wczoraj pisałem klasę kontrolera stronicowania. Jak liczycie rekordy, to nie używajcie
  1. <?php
  2. $sql="SELECT * FROM tabela";
  3. $query=mysql_query($sql);
  4. $ile_rekordow=mysql_num_rows($query);
  5.  
  6. //tylko :
  7.  
  8. $sql="SELECT COUNT(*) FROM tabela";
  9.  
  10. //i dalej normalnie przez fetch_array lub result etc.
  11. ?>


Ta funkcja jest około 300+%(zalezy ile rekordów) szybsza niż liczenie przez mysql_num_rows()
Jak już koniecznie chcecie, to używajcie mysql_affected_rows()

Wszystko rozbija się o "SELECT * ..." Głupotą jest używanie takiego kodu po to, aby policzyc ich całkowitą ilośc w tabeli.

Oczwiscie nabiera to sensu, jeśli zamierzacie potem coś z tymi wyciągniętymi danymi zrobic.

P.S Testowałem te zapytania na tebeli z 2000000 rekordów.

Ten post edytował Cysiaczek 3.07.2006, 21:25:45
Go to the top of the page
+Quote Post
mario
post
Post #11





Grupa: Zarejestrowani
Postów: 186
Pomógł: 0
Dołączył: 23.09.2003
Skąd: Siemianowice Śląskie

Ostrzeżenie: (0%)
-----


oczywiscie ze uzywam zapytan z * aby otrzymac calosc, gdyz najczesciej cala tablica jest mi potrzebna do wyswietlenia (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.01.2026 - 06:27